home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / boot / netBoot.OpenProm / sun4c.md / idprom.c < prev    next >
C/C++ Source or Header  |  1991-01-09  |  1KB  |  45 lines

  1.  
  2. /*
  3.  * @(#)idprom.c 1.4 88/02/08
  4.  * Copyright (c) 1986 by Sun Microsystems, Inc.
  5.  */
  6.  
  7. #include "idprom.h"
  8.  
  9. /*
  10.  * Read the ID prom and check it.
  11.  * Arguments are a format number and an address to store prom contents at.
  12.  *
  13.  * Result is format number if prom has the right format and good checksum.
  14.  * Result is -1           if prom has the right format and bad checksum.
  15.  * Result is prom's format if prom has the wrong format.
  16.  *
  17.  * If the PROM is in the wrong format, the addressed area is not changed.
  18.  *
  19.  * This routine must know the size, and checksum algorithm, of each format.
  20.  * (Currently there's only one.)
  21.  */
  22.  
  23. int
  24. idprom(format, idp)
  25.     unsigned char format;
  26.     register struct idprom *idp;
  27. {
  28.     unsigned char *cp, sum=0, promform;
  29.     int len;
  30.     short i;
  31.  
  32.     len = GetIDProm((unsigned char *)idp, sizeof(*idp));
  33.     if (len != sizeof(*idp))
  34.         return -1;
  35.     promform = idp->id_format;
  36.     if (format != promform)
  37.         return promform;
  38.     cp = (unsigned char *)idp;
  39.     for (i=0; i<16; i++)
  40.         sum ^= *cp++;
  41.     if (sum != 0)
  42.         return -1;
  43.     return promform;
  44. }
  45.